Communications networks enable people and machines to communicate. Each person or machine connected to the network is a network element. Some network elements are routing nodes. A routing node is a network element that forwards information. Forwarding means receiving information that is intended for another network element and sending that information toward that other network element. Other network elements are end points. An end point is a network element that can send information or receive information, but can not forward information.
Early communications networks, such as the early telephone networks, were connection based. In connection based networks, two endpoints were electrically connected by way of switch boards and, later, electrical switches. Modern communications networks are primarily packet based. In a packet based network, information is packaged into digital packets and routed between endpoints. Routing is a process by which a packet is passed from one routing node to another until it can be passed to its destination. A routing node can also send or receive packets from other network elements.
A data stream is information being transmitted over time from one network element to another. Packet networks must often break a data stream into a series of packets. One reason for packetizing a data stream is that the data stream contains more data than a single packet can hold. Another reason is that the endpoints need to receive data quickly after the data is generated. An example is two people having a phone conversation. If only single packets were used, one person would begin talking and continue talking until exhausting their side of the conversation, then the recorded soliloquy would be sent to the other person. Many short packets are used instead so the listener can hear the speaker nearly instantaneously.
The packets carried by a packet network have many different parts, called fields. The technical specification describing the fields and how to assemble them into a packet is called a network protocol. Those skilled in the art of communications network utilize many different network protocols. One common protocol is the Internet Protocol (IP) defined by Request for Comment (RFC) 791 of the Internet Engineering Task Force (IETF). Another popular protocol is the Transmission Control Protocol (TCP) defined by IETF RFC 793. Those skilled in the art of communications networks are familiar with the IETF and the RFCs because they regulate and define the structure and technological basis for the Internet.
IP and TCP packets have two main sections, the header and the payload. The payload is the data that is being transmitted. The header is data intended for use by the network itself. Header structures are defined by the RFCs and contain specific fields.
IP packets have IP headers as defined by IETF RFC 791. Some of the fields in an IP packet header are source address, destination address, time to live and header checksum. Some optional fields are security, and timestamp. Every network element in an IP network has at least one address. The source address is the address of the network element that sent the packet. Similarly, the destination address is the address of the network element that should receive the packet.
TCP packets have TCP headers as defined by IETF RFC 793. Some of the fields in a TCP packet header are TCP checksum, urgent pointer, sequence number, maximum segment size (MSS), and the urgent bit (URG). TCP packets are often carried inside IP packets. Such packets are often called TCP/IP packets. The IP packet's payload is the TCP packet. A TCP/IP packet has an IP header and a TCP header. Just as TCP and IP can be combined, many protocols can be combined into a protocol stack. Every protocol has its own header. The number of protocols that can be theoretically combined is limitless, but usually less than 6 can be combined practically.
TCP is a connection oriented protocol. A TCP connection is established when one network element requests a TCP connection from a second network element and the second network element agrees. Either network element can then send a data stream through the TCP connection to the other network element.
When a TCP connection is established, the two network elements negotiate to reach an agreement on certain connection properties. One of those properties is the MSS. The MSS is the greatest amount of data that a network element can put in any one packet. To transmit a 10000 byte data stream from a source to a destination with a 500 byte MSS the source can packetize the data into 20 packets containing 500 bytes of data. Each of the 20 packets has a sequence number. For example, the first packet can have a sequence number of 0, the second a sequence number of 500, and the 20th a sequence number of 9500. The destination can use the sequence numbers to reassemble the data stream.
The network elements in a packet network are connected by links. Different technologies use different types of links. Radio links use radio waves through the air. Fiber optic links use long glass fibers. A link carries packets between two directly linked network elements. Indirectly linked network elements can send packets to one another, but the packets must traverse two or more links. Some links have higher capacity than other links, meaning they can carry information at a higher rate. One way to increase capacity is to trunk, or combine, two slower links. A trunk is a link that consists of trunked links.
Packets must often traverse a number of routing nodes when traveling from end point to end point. A routing node has more than one link. It receives a packet on one link and must make a routing decision by selecting which link to forward the packet onto. Routing nodes can use policies to make routing decisions. A policy instructs the routing node to examine various data and make a decision based on that data. One important datum that can be used is which link the packet arrived on. Data can also be obtained from any header field in the packet.
Trunks cause an interesting routing problem. All the trunked links go between the same two network elements. Which one should carry a packet? The solution is to use a load balancing policy to try to ensure that all the trunked links have similar utilization. Utilization is a networking term for the percentage of capacity being used. The current solution is to choose a trunked link based on a hash of the source address and destination address. A hash is a mathematical function that, given an input, produces a seemingly random result. As such, the current solution passes all the packets in a data stream, which go from one particular network element to another, on the same trunked link, even when the other trunked links are completely idle. As such, the trunk links have very dissimilar utilization and the rate at which information traverses the trunk is virtually limited to the capacity of one trunked link.
Based on the foregoing it can be appreciated that in order to overcome the shortcomings of the current methods and systems a need exists for an improved method and system for distributing packets more evenly over a trunk.